﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace ASKY
{
    public partial class menuadmin : Form
    {
        OleDbConnection con;
        OleDbDataReader dr;
        string tipoadmin = "noadmin", usuario = "", contrasena = "",userchk="",usuariodb="";
        string usuarioseleccionado = "", usuarioconsulta;
        
        
        public menuadmin()
        {
            con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Joe\Dropbox\UNIVA\OCTAVO\DESARROLLO ORIENTADO A OBJETOS\ASKY\ASKY\ASKY\usuarios.accdb");
            InitializeComponent();
        }

        private void menuadmin_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'usuariosDataSet1.db_usuarios' table. You can move, or remove it, as needed.
            //this.db_usuariosTableAdapter.Fill(this.usuariosDataSet1.db_usuarios);
            Elimina_usuario();
            Consultar_usuario();
        }

        private void crear_usuario_btn_Click(object sender, EventArgs e)
        {
            Crear_Usuario();
        }

        public void Crear_Usuario()
        {
  if (crea_usuario_box.Text != "" & crea_contrasena_box.Text != "")
            {
      try
                {
                    userchk = crea_usuario_box.Text;
                    string f = "SELECT Nombre FROM db_usuarios WHERE Nombre = '"+userchk+"'";
                    OleDbCommand com = new OleDbCommand(f, con);
                    com.Connection.Open();
                    dr = com.ExecuteReader();

                    while (dr.Read())
                    {
                        usuariodb = dr.GetString(0).ToString();
                    }
                    
                    
                    com.Connection.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    con.Close();

                }
      if (usuariodb == userchk)
          MessageBox.Show("Usuario existente");
      else
      {

          try
          {
              contrasena = crea_contrasena_box.Text;
              usuario = crea_usuario_box.Text;
              string c = "INSERT INTO db_usuarios (Nombre, Contrasena, Tipo) VALUES (@usuario,@contransena,@tipoadmin)";
              OleDbCommand comando = new OleDbCommand(c, con);

              comando.Parameters.Add(new OleDbParameter("@usuario", OleDbType.VarChar));
              comando.Parameters["@usuario"].Value = usuario;
              comando.Parameters.Add(new OleDbParameter("@contrasena", OleDbType.VarChar));
              comando.Parameters["@contrasena"].Value = contrasena;
              comando.Parameters.Add(new OleDbParameter("@tipoadmin", OleDbType.VarChar));
              comando.Parameters["@tipoadmin"].Value = tipoadmin;

              comando.Connection.Open();
              comando.ExecuteNonQuery();
              comando.Connection.Close();
              MessageBox.Show("Usuario creado correctamente!");

          }
          catch (Exception ex)
          {
              MessageBox.Show(ex.Message);
              con.Close();

          }
      }
          crea_usuario_box.Clear();
          crea_contrasena_box.Clear();
      
            }
            else
                MessageBox.Show("Faltan parametros");
        }

        private void crea_admin_check_CheckedChanged(object sender, EventArgs e)
        {
            if (crea_admin_check.Checked)
                tipoadmin = "admin";

        }

        private void Limpiar_formulario_Click(object sender, EventArgs e)
        {
            crea_usuario_box.Clear();
            crea_contrasena_box.Clear();
            crea_usuario_box.Focus();
        }

        public void Elimina_usuario() {
            Lista_elimina_usuario.Items.Clear();
            try
            {
                string c = "SELECT * FROM db_usuarios";
                OleDbCommand com = new OleDbCommand(c,con);
                com.Connection.Open();
                dr = com.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        Lista_elimina_usuario.Items.Add(dr[1].ToString());
                    }
                }
                com.Connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }

        }

        public void Eliminar()
        {
            try
            {
                string c = "DELETE FROM db_usuarios WHERE Nombre = '"+usuarioseleccionado+"'";
                OleDbCommand com = new OleDbCommand(c, con);
                com.Connection.Open();
                com.ExecuteNonQuery();
                com.Connection.Close();
                Lista_elimina_usuario.Items.Clear();
                Elimina_usuario();
                MessageBox.Show("Usuario eliminado con éxito");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
 
    }

        private void Elimina_usuario_btn_Click(object sender, EventArgs e)
        {
            usuarioseleccionado = Lista_elimina_usuario.SelectedItem.ToString();
            Eliminar();

        }

        private void button4_Click(object sender, EventArgs e)
        {

            this.Hide();
        }

        public void Consultar_usuario() 
        {
            try
            {
                string c = "SELECT * FROM db_usuarios";
                OleDbCommand com = new OleDbCommand(c, con);
                com.Connection.Open();
                dr = com.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        Consulta_usuario.Items.Add(dr[1].ToString());
                    }
                }
                com.Connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
        
        
        }

        private void Consulta_usuario_btn_Click(object sender, EventArgs e)
        {
            usuarioconsulta = Consulta_usuario.SelectedItem.ToString();
            Consulta consulta = new Consulta();
            consulta.Setusuario(usuarioconsulta);
            consulta.Show();
            }

        private void button1_Click(object sender, EventArgs e)
        {
            Ayuda help = new Ayuda();
            help.Show();
        }

    }
}
